free() pointer to arrow binary in Python #1273
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR fixes a small issue in Perspective's arrow loading code in Python - previously, the pointer to the malloc'd section for the arrow binary was never explicitly free'd (as it was in Javascript). This leads to the memory allocated for the binary leaking after the arrow is loaded into Perspective.
With testing using
psutil
and 25 updates usingsuperstore.arrow
, comparing memory usage with/without free() shows a significant impact:Without free():
rss
: 115539968 bytesrss
: 302710784 bytesWith free():
rss
: 113532928 bytesrss
: 245538816 bytesMemory usage grows much more slowly when
free()
is added, demonstrating the leak.